home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / progtool / c / egem_210 / egem / example / windemo / mouse.c < prev    next >
C/C++ Source or Header  |  1995-11-25  |  2KB  |  112 lines

  1.  
  2. /* einfaches Beispielprogramm (zeigt ständig die Mauskoordinaten an),
  3.    läuft nur als Programm */
  4.  
  5. #include <e_gem.h>
  6. #include <stdio.h>
  7. #include <string.h>
  8.  
  9. #define GADGETS    NAME|CLOSER|MOVER|SMALLER
  10.  
  11. WIN *win;
  12. char info[256];
  13.  
  14. int update;
  15.  
  16. void Draw(WIN *win,GRECT *rect)
  17. {
  18.     if (!update)
  19.         rc_sc_clear(rect);
  20.     v_gtext(x_handle,win->work.g_x+gr_cw,win->work.g_y+gr_ch,info);
  21. }
  22.  
  23. int Init(XEVENT *event,int available)
  24. {
  25.     int flags = MU_MESAG|MU_KEYBD;
  26.  
  27.     if (win->inside>=0)
  28.     {
  29.         if (available & MU_M1)
  30.         {
  31.             event->ev_mm1flags = event->ev_mm1width = event->ev_mm1height = 1;
  32.             event->ev_mm1x = event->ev_mmox;
  33.             event->ev_mm1y = event->ev_mmoy;
  34.             flags |= MU_M1;
  35.         }
  36.  
  37.         if (available & MU_M2)
  38.         {
  39.             event->ev_mm2flags = win->inside;
  40.             *(GRECT *) &event->ev_mm2x = win->work;
  41.             flags |= MU_M2;
  42.         }
  43.     }
  44.  
  45.     return (flags & available);
  46. }
  47.  
  48. int Event(XEVENT *event)
  49. {
  50.     int *msg = event->ev_mmgpbuf,wich = event->ev_mwich,used = 0;
  51.  
  52.     if (wich & MU_M1)
  53.     {
  54.         sprintf(info,"X: %3d, Y: %3d",event->ev_mmox,event->ev_mmoy);
  55.         update++;
  56.         redraw_window(win,NULL);
  57.         update--;
  58.         used |= MU_M1;
  59.     }
  60.  
  61.     if (wich & MU_M2)
  62.     {
  63.         window_mouse(win);
  64.         used |= MU_M2;
  65.     }
  66.  
  67.     if ((wich & MU_KEYBD) && (event->ev_mmokstate & K_CTRL) && scan_2_ascii(event->ev_mkreturn,K_CTRL)=='Q')
  68.         exit_gem(0);
  69.  
  70.     if (wich & MU_MESAG)
  71.     {
  72.         used |= MU_MESAG;
  73.         switch (msg[0])
  74.         {
  75.         case AP_TERM:
  76.         case WM_CLOSED:
  77.             exit_gem(0);
  78.             break;
  79.         case WM_TOPPED:
  80.             window_top(win);
  81.             break;
  82.         case WM_BOTTOMED:
  83.             window_bottom(win);
  84.             break;
  85.         case WM_MOVED:
  86.             window_size(win,(GRECT *) &msg[4]);
  87.             break;
  88.         default:
  89.             used &= ~MU_MESAG;
  90.         }
  91.     }
  92.  
  93.     return (used);
  94. }
  95.  
  96. void main(void)
  97. {
  98.     GRECT curr;
  99.     if (init_gem(NULL,"Mouse!","MOUSE",0,0,0)==TRUE)
  100.     {
  101.         window_border(GADGETS,0,0,gr_cw*16,gr_ch*3,&curr);
  102.          if ((win=open_window("Mouse!",NULL,NULL,NULL,GADGETS,FALSE,0,0,NULL,&curr,NULL,Draw))!=NULL)
  103.         {
  104.             window_set_mouse(win,THIN_CROSS,ARROW,NULL,NULL);
  105.             v_set_mode(MD_REPLACE);
  106.             v_set_text(ibm_font_id,ibm_font,BLACK,NULL);
  107.             Event_Handler(Init,Event);
  108.             Event_Multi(NULL);
  109.         }
  110.     }
  111.     exit_gem(-1);
  112. }